home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / units / GenerateLotteryNums.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-10  |  2KB  |  150 lines

  1. Unit GenerateLotteryNums;
  2.  
  3. INTERFACE
  4.  
  5. Uses
  6.     Exec, Intuition;
  7.  
  8. Const    
  9.     NUM_NUMS   = 6; { amount of numbers to choose }
  10.     NUM_BOARDS = 5; { number of boards }
  11.     
  12. Type
  13.     pBoard = ^tBoard;
  14.     tBoard = Array[1..NUM_NUMS] of Integer;
  15.     
  16.     pBoards = ^tBoards;
  17.     tBoards = Record
  18.         bo_Nums  : Array[1..NUM_BOARDS] of tBoard;
  19.         bo_Weeks : Byte;
  20.     End;
  21.  
  22. Procedure InitGLN;
  23. Procedure RandomBoard(VAR b : tBoard);
  24. Procedure RandomBoards(VAR b : tBoards);
  25. Procedure ClearBoard(VAR b : tBoard);
  26. Procedure ClearBoards(VAR b : tBoards);
  27. Procedure SortBoard(VAR b : tBoard);
  28. Procedure SortBoards(VAR b : tBoards);
  29. Procedure SetWeeks(VAR b : tBoards; n : LONG);
  30. Function  GetWeeks(VAR b : tBoards): LONG;
  31.  
  32. IMPLEMENTATION
  33.  
  34. Procedure InitGLN;
  35.  
  36. Begin
  37.     Randomize;
  38. End;
  39.  
  40.  
  41. Procedure RandomBoard;
  42.  
  43. Var
  44.     n, y, 
  45.     tmp   : LONG;
  46.     Again : Boolean;
  47.     
  48. Begin
  49.     For n := 1 to NUM_NUMS do begin
  50.         Again := True;
  51.         While Again do begin
  52.             Again := False;
  53.             tmp := Random(50);
  54.             { Check for duplicates }
  55.             If tmp = 0 then
  56.                 Again := True
  57.             else begin
  58.                 For y := 1 to NUM_NUMS do
  59.                     If tmp = b[y] then Again := True;
  60.             End;
  61.         End;
  62.         b[n] := tmp;
  63.     End;
  64.     SortBoard(b);
  65. End;
  66.  
  67.  
  68. Procedure RandomBoards;
  69.         
  70. Var
  71.     n : Integer;
  72.     
  73. Begin
  74.     For n := 1 to NUM_BOARDS do
  75.         RandomBoard(b.bo_Nums[n]);
  76. End;
  77.  
  78.  
  79. Procedure ClearBoard(VAR b : tBoard);
  80.  
  81. Var
  82.     n : Integer;
  83.     
  84. Begin
  85.     For n := 1 to NUM_NUMS do
  86.         b[n] := 0;
  87. End;
  88.  
  89.  
  90. Procedure ClearBoards(VAR b : tBoards);
  91.  
  92. Var
  93.     n : Integer;
  94.     
  95. Begin
  96.     For n := 1 to NUM_BOARDS do
  97.         ClearBoard(b.bo_Nums[n]);
  98.     b.bo_Weeks := 1;
  99. End;
  100.  
  101.  
  102. Procedure SortBoard;
  103.  
  104. Var
  105.     ob : tBoard;
  106.     pass, minindex, j : Integer;
  107.     
  108. Begin
  109.     For pass := 1 to NUM_NUMS do begin
  110.         MinIndex := 1;
  111.         For j := 2 to NUM_NUMS do begin
  112.             If b[j] < b[minindex] then
  113.                 minindex := j;
  114.         End;
  115.         ob[pass] := b[minindex];
  116.         b[minindex] := MaxInt;
  117.     End;
  118.     b := ob;
  119. End;
  120.  
  121. Procedure SortBoards(VAR b : tBoards);
  122.  
  123. Var
  124.     n : Integer;
  125.     
  126. Begin
  127.     For n := 1 to NUM_BOARDS do
  128.         SortBoard(b.bo_Nums[n]);
  129. End;
  130.  
  131. Procedure SetWeeks;
  132.  
  133. Begin
  134.     If (n > 0) and (n < 9) then
  135.         b.bo_weeks := n
  136.     else
  137.         b.bo_weeks := 1;
  138. End;
  139.  
  140. Function GetWeeks;
  141.  
  142. Begin
  143.     GetWeeks := b.bo_Weeks;
  144. End;
  145.  
  146. End.
  147.  
  148.  
  149.     
  150.